home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************************
-
- *************************************************************************************/
-
- #include "JavaRuntime.h"
- #include "Messages.h"
- #include <string.h>
-
- static JavaRuntime sRuntime = nil;
- extern long gRunning;
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- JavaStatus
- RoasterIDE_registerNativeMethods(JavaRuntime runtime);
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- static JavaStatus
- wacgi_Done(JavaEnv env)
- {
- JavaRef this = JavaEnv_popRef(env);
-
- gRunning = 0;
- return JavaStatusOk;
- }
-
- static JavaStatus
- wacgi_SendRequest(JavaEnv env)
- {
- JavaRef this = JavaEnv_popRef(env);
- JavaRef requestString = JavaEnv_popRef(env);
- JavaStatus js;
- size_t len;
- JavaChar *unichars;
- char *s;
- int i;
-
- js = JavaString_length(env, requestString, &len);
-
- unichars = (JavaChar *) NewPtr(len * 2);
-
- if (unichars)
- {
- js = JavaString_getChars(env, requestString, 0, -1, unichars);
-
- s = (char *) unichars;
- for (i = 0; i < len; i++)
- {
- s[i] = unichars[i];
- s[i+1] = 0;
- }
-
- printf("Sending request [%s]\n", s);
-
- MsgToQ(CGIQ, s, len+1);
-
- DisposePtr((Ptr) unichars);
- }
-
- return JavaStatusOk;
- }
-
- static JavaStatus
- wacgi_GetResponse(JavaEnv env)
- {
- JavaRef this = JavaEnv_popRef(env);
- JavaRef theString;
- char *response;
-
- response = MsgFromQ(CGIQ);
-
- if (response)
- {
- JavaString_makeUTF(env, &theString, response, strlen(response));
- JavaEnv_pushRef(env, theString);
- DisposePtr(response);
- }
- else
- {
- JavaEnv_pushRef(env, JavaNull);
- }
-
- return JavaStatusOk;
- }
-
- static JavaStatus
- java_lang_Runtime_exitInternal_stub(JavaEnv env)
- {
- JavaInt exitCode = JavaEnv_popInt(env);
- JavaRef this = JavaEnv_popRef(env);
-
- return JavaStatusOk;
- }
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- JavaStatus
- RoasterIDE_registerNativeMethods(JavaRuntime runtime)
- {
- JavaStatus err;
- JavaNativeTable methodTable[] = {
- { "java/lang/Runtime", "exitInternal", "(I)V",
- java_lang_Runtime_exitInternal_stub, NULL, JavaAccessMember },
- {"wa/http/WACGI", "SendRequest", "(Ljava/lang/String;)V",
- wacgi_SendRequest, NULL, JavaAccessMember},
- {"wa/http/WACGI", "GetResponse", "()Ljava/lang/String;",
- wacgi_GetResponse, NULL, JavaAccessMember},
- {"wa/http/WACGI", "Done", "()V",
- wacgi_Done, NULL, JavaAccessMember},
- { NULL }
- };
- err = JavaRuntime_registerNativeMethodTable(runtime, methodTable);
- return err;
- }
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- OSErr InitalizeJavaRuntime(void)
- {
- JavaRuntimeInitargs initArgs;
- JavaStatus err;
-
- JavaRuntime_makeDefaultInitArgs(&initArgs);
- err = JavaRuntime_make(&initArgs, &sRuntime);
- if (err != JavaStatusOk)
- {
- //should we do something else?
- return err;
- }
- err = RoasterIDE_registerNativeMethods(sRuntime);
- return noErr;
- }
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- JavaRuntime GetJavaRuntime(void)
- {
- if(sRuntime == nil) {
- InitalizeJavaRuntime();
- }
- return sRuntime;
- }
-
- /*************************************************************************************
-
- *************************************************************************************/
-
- void DisposeJavaRuntime(void)
- {
- if(sRuntime) {
- JavaRuntime_dispose(sRuntime);
- }
- sRuntime = nil;
- }